<?php
class MicasaController extends AppController
{
	var $name = 'Micasa';
  var $uses = array('Producto','Pedido','Producto_pedido','Periodo');
	var $helpers = array('Html','Ajax','Javascript','Cargar','Json','Vista','Interfaz','Pdf');
 // public $helpers = array('PhpExcel'); 

	var $layout =  "ajax";
	var $components = array('Util','For','Json','Interfaz','Vista'/*,'RequestHandler','DebugKit.Toolbar'*/);

	function beforeFilter()
  {
  		$this->validar();
  }

	function periodo_act()
	{
			if($this->Session->read('periodo_activo_id')>0){echo "";}
			else
			{
					$d=$this->Util->periodo_activo();
					$this->Session->write('periodo_activo_id',$d[0]);
					$this->Session->write('periodo_activo_nombre',$d[1]);
			}
	}
	
	public function nuevo_buscar($div='vista',$divlistado='vista') 
	{		
			$this->set('div',$div);
			$this->set('divlistado',$divlistado);

	}

	public function listado_filtro_funcionarios() 
	{

			$id_ven=$this->request->data['vent'];
			$data=$this->Interfaz->data($this->request->data);
			if(empty($data['parametro']))
			{
			    $this->Vista->mensaje('Debes Indicar el Parametro de Busqueda','ERROR');
					$this->set('data',null);
			}
			else 
			{
					$r=$this->busqueda_filtro_funcionarios($data['parametro']);
					if($r) $this->Vista->cerrar_ventana($id_ven);
			}
			$this->set('parametrobuscar',$data['parametro']);
	}


	function busqueda_filtro_funcionarios($parametrobuscar=null) 
	{
			$this->Vista->title('Listado de Periodos Filtrado');
			$condiciones=array();
			$condiciones['UPPER(Funcionario.nombre) like ']='%'.$parametrobuscar.'%';
			$condiciones['UPPER(Funcionario.apellido) like ']='%'.$parametrobuscar.'%';
			$condiciones['UPPER(Funcionario.cedula) like ']='%'.$parametrobuscar.'%';
			$condiciones['UPPER(Funcionario.ficha) like ']='%'.$parametrobuscar.'%';

		 	$data=$this->Funcionario->find('all',array("conditions"=>array("OR"=>$condiciones)));
			$this->set('data',$data);
			$this->log();
			return count($data);
	}

	public function filtrado($div='vista',$divlistado='vista') 
	{	
			$this->set('div',$div);
			$this->set('divlistado',$divlistado);
			$lista=$this->Periodo->find('list', array('fields'=> array('Periodo.id','Periodo.nombre'),'order'=>'Periodo.id Desc'));
			$this->set('lista_periodos',$lista);

	}

	public function listado_filtro() 
	{
			
			$id_ven=$this->request->data['vent'];
			$data=$this->Interfaz->data($this->request->data);

			if(empty($data['nombre']) and empty($data['apellido']) and empty($data['cedula']) and empty($data['ficha']) and empty($data['periodo_id']))
			{
			    $this->Vista->mensaje('Debes Indicar al Menos Uno de los Parametros de Busqueda','ERROR');
					$this->set('data',null);
					
			}
			else 
			{
					$r=$this->busqueda_filtros($data['nombre'],$data['apellido'], $data['cedula'],$data['ficha'],$data['periodo_id']);
				//	if($r) $this->Vista->cerrar_ventana($id_ven);
			}
			$this->set('nombrebuscar',$data['nombre']);$this->set('apellidobuscar',$data['apellido']);$this->set('cedulabuscar',$data['cedula']);
			$this->set('fichabuscar',$data['ficha']);$this->set('periodoidbuscar',$data['periodo_id']);$this->set('busq','');
	}

	function busqueda_filtros($nombrebuscar=null,$apellidobuscar=null,$cedulabuscar=null,$fichabuscar=null,$periodoidbuscar=null,$limit=1) 
	{
		
			$this->Vista->title('Listado de Funcionarios Con Solicitudes Filtrado');
			$condiciones=array();
			if(!empty($nombrebuscar)) $condiciones['nombre']=$nombrebuscar;
			if(!empty($apellidobuscar)) $condiciones['apellido']=$apellidobuscar;
			if(!empty($cedulabuscar)) $condiciones['cedula']=-$cedulabuscar;
			if(!empty($fichabuscar)) $condiciones['fecha']=$fichabuscar;
			if(count($condiciones)>0)
			{
					$ids=$this->Funcionario->buscar_funcionarios($condiciones);
			}
			else $ids=null;
			$condiciones=array();
			if(!empty($periodoidbuscar)) $condiciones['Pedido.periodo_id']=$periodoidbuscar;
			if(count($ids)>0) $condiciones['Pedido.funcionario_id']=$ids;

			if($limit==1) $data=$this->Pedido->find('all',array("conditions"=>$condiciones,"limit"=>500));
			else $data=$this->Pedido->find('all',array("conditions"=>$condiciones));
			$this->set('data',$data);
			$this->log();
			return count($data);
	}

	function busqueda_filtros_pdf($nombrebuscar=null,$apellidobuscar=null,$cedulabuscar=null,$fichabuscar=null,$periodoidbuscar=null) 
	{
			$this->Vista->title('Listado de Funcionarios Con Solicitudes Filtrado');
			$condiciones=array();
			if(!empty($nombrebuscar)) $condiciones['nombre']=$nombrebuscar;
			if(!empty($apellidobuscar)) $condiciones['apellido']=$apellidobuscar;
			if(!empty($cedulabuscar)) $condiciones['cedula']=-$cedulabuscar;
			if(!empty($fichabuscar)) $condiciones['fecha']=$fichabuscar;
			if(count($condiciones)>0)
			{
					$ids=$this->Funcionario->buscar_funcionarios($condiciones);
			}
			else $ids=null;
			$condiciones=array();
			if(!empty($periodoidbuscar)) $condiciones['Pedido.periodo_id']=$periodoidbuscar;
			if(count($ids)>0) $condiciones['Pedido.funcionario_id']=$ids;

			$data=$this->Pedido->find('all',array("conditions"=>$condiciones));
			
			$this->log();
			return $data;
	}


	function listado() 
	{
		$this->periodo_act();
		$this->Vista->title('Listado de Funcionarios Con Pedidos Asociados');
   	$data=$this->Pedido->find('all',array('conditions'=> array("Pedido.periodo_id"=>$this->Session->read('periodo_activo_id'))));
		
		$this->set('data',$data);
		$this->set('busq','');
		$this->log('ver');
	}

	public function nuevo($div='vista',$divlistado='vista',$id=null) 
	{	
			$this->periodo_act();
			$funcionario=$this->Interfaz->id($id);
			$this->set('funcionario',$this->Funcionario->find('first',array('conditions'=> array("Funcionario.id"=>$funcionario, "Funcionario.estatus"=>'1'))));
			$this->set('div',$div);
			$this->set('divlistado',$divlistado);
			if($this->Session->read('periodo_activo_id')>0)
			{
					$data=$this->data=null;
					if(isset($funcionario) and is_numeric($funcionario))
					{
						 	$pa=$this->Pedido->find('first',array('fields'=>array('Pedido.id'),'conditions'=> array("Pedido.funcionario_id" => $funcionario,"Pedido.periodo_id"=>$this->Session->read('periodo_activo_id'))));
							if(!isset($pa['Pedido']['id']))
							{
									$datos['Pedido']['usuario_id']=$this->Interfaz->id($this->Session->read('usuario_id'));
									$datos['Pedido']['funcionario_id']=$funcionario;
									$datos['Pedido']['periodo_id']=$this->Session->read('periodo_activo_id');
									if($this->Pedido->save($datos))
									{
											$p=$this->Pedido->id;
									}
									else
									{
											$this->Vista->mensaje("Error al Crear Pedido");
											$p=0;
									}
							}
							else 
							{
									$p=$pa['Pedido']['id'];
							}
							if($p>0)
							{
									$this->set('pedido',$p);
									$productos=$this->Producto->find('all',array('conditions'=> array("Producto.id > '0'")));
									$this->set('productos',$productos);
									$producto_pedido=$this->Producto_pedido->find('all',array('conditions'=> array("Producto_pedido.pedido_id"=>$p)));
									$this->set('producto_pedido',$producto_pedido);
							}
							else
							{
									$this->set('productos',null);$this->set('pedido',null);$this->Vista->mensaje("Error al Crear Pedido");
							}		
					}
					else
					{
							$this->Vista->mensaje("Error al Ubicar el Funcionario");
							$this->set('productos',null);$this->set('pedido',null);
					}
			}
			else
			{
					$data=$this->data=null;
					$this->set('productos',null);$this->set('pedido',null);
			}

	}


	public function agregar($id_pedido,$id_pro=null) 
	{
			$id_pro=$this->Interfaz->id($id_pro);
			if(isset($id_pro) and is_numeric($id_pro))
			{
					$a=$this->Producto_pedido->find('first',array('fields'=>array('Producto_pedido.id'),'conditions'=> array("Producto_pedido.pedido_id"=>$id_pedido, "Producto_pedido.producto_id"=>$id_pro)));
					if(isset($a['Producto_pedido']['id']) and $a['Producto_pedido']['id'] > 0)
					{
							$this->Vista->mensaje("Error El producto ya esta Asociado al Pedido");
					}
					else
					{
							$a=$this->Producto->find('first',array('fields'=>array('Producto.tipo','Producto.monto'),'conditions'=> array("Producto.id"=>$id_pro)));
							$t=$a['Producto']['tipo'];
							$monto=$a['Producto']['monto'];
							$a=$this->Producto_pedido->find('first',array('fields'=>array('Producto_pedido.id'),'conditions'=> array("Producto_pedido.pedido_id"=>$id_pedido, "Producto.tipo"=>$t)));
							if(isset($a['Producto_pedido']['id']) and $a['Producto_pedido']['id'] > 0)
							{
									$this->Vista->mensaje("Error ya Tiene un producto del Mismo Tipo Asociado al Pedido");
							}
							else
							{
									$datos['Producto_pedido']['pedido_id']=$id_pedido;
									$datos['Producto_pedido']['producto_id']=$id_pro;
									$datos['Producto_pedido']['monto']=$monto;
									if($this->Producto_pedido->save($datos))
									{
//echo "";
											//$this->Vista->mensaje("Producto Asociado al Pedido Exitosamente");
									}
									else
									{
											$this->Vista->mensaje("Error al Asociar Producto al Pedido");
									}
							}
					}
			}
			
    	$producto_pedido=$this->Producto_pedido->find('all',array('conditions'=> array("Producto_pedido.pedido_id"=>$id_pedido)));
			$this->set('producto_pedido',$producto_pedido);
			$this->set('pedido',$id_pedido);
	}

	public function quitar($id_pedido,$id=null) 
	{
			$id=$this->Interfaz->id($id);
			if(isset($id) and is_numeric($id))
			{
					if($this->Producto_pedido->delete($id))
					{
							$this->Vista->mensaje("Producto Eliminado del Pedido Exitosamente");
					}
					else
					{
							$this->Vista->mensaje("Error al Eliminar el Pedido!!!");
					}
			}
			
    	$producto_pedido=$this->Producto_pedido->find('all',array('conditions'=> array("Producto_pedido.pedido_id"=>$id_pedido)));
			$this->set('producto_pedido',$producto_pedido);
			$this->set('pedido',$id_pedido);
			$this->render('agregar');
	}



	public function pdf($tipo='',$busq=null) 
	{
			$this->periodo_act();
			if($busq==null)$busq='';
			$this->layout = 'pdf';
			$data=$this->Interfaz->busqueda($this->uses,'Funcionario','Tp',$busq);
			for($j=0;$j<count($data);$j++)
			{
					$pa=$this->Pedido->find('first',array('fields'=>array('Pedido.id'),'conditions'=> array("Pedido.funcionario_id" => $data[$j]['Funcionario']['id'],"Pedido.periodo_id"=>$this->Session->read('periodo_activo_id'))));
					if(isset($pa['Pedido']['id']) and $pa['Pedido']['id'] >0)
					{
							$data[$j]['Funcionario']['cantidad']=$this->cantidad_productos($pa['Pedido']['id']);
					}
					else
					{
							$data[$j]['Funcionario']['cantidad']=0;
					}
					
			}
			$this->set('data',$data);
			$this->set('tipo',$tipo);			
			$this->set('busq',$busq);
	}

	

	public function pdf_filtrado($tipo=null,$nombrebuscar=null,$apellidobuscar=null,$cedulabuscar=null,$fichabuscar=null,$periodoidbuscar=null,$busq=null) 
	{
			if($busq==null)$busq='';
			$this->layout = 'pdf';

			$data=$this->busqueda_filtros_pdf($nombrebuscar,$apellidobuscar,$cedulabuscar,$fichabuscar,$periodoidbuscar,0);
		
			for($j=0;$j<count($data);$j++)
			{
					$aux= $this->Funcionario->find("first",array("fields"=>"Organizacion.siglas","conditions"=>array("Funcionario.id"=>$data[$j]['Funcionario']['id'])));
					$data[$j]['Organizacion']['siglas']=$aux['Organizacion']['siglas'];
					$data[$j]['Funcionario']['cantidad']=$this->cantidad_productos($data[$j]['Pedido']['id']);
			}
			$this->set('tipo',$tipo);			
			$this->set('busq',$busq);
			$this->set('data',$data);		
			$this->render("pdf");
	}

	public function cantidad_productos($pedido_id=null) 
	{
			$aux=$this->Producto_pedido->find('count',array("conditions"=>array("Producto_pedido.pedido_id"=>$pedido_id)));
			return $aux;
  }


	public function excel($tipo=1,$busq=null) 
	{
			$this->set('tipo',$tipo);
 			//	$this->layout = '';
			//	if($busq==null)$busq='';
  		//  $this->set('tipo',$tipo);
			//	$this->render('pdf');

  }

	public function excel_filtrado($tipo=null,$nombrebuscar=null,$apellidobuscar=null,$cedulabuscar=null,$fichabuscar=null,$periodoidbuscar=null,$busq=null) 
	{
			if($busq==null)$busq='';
			
			$data=$this->busqueda_filtros_pdf($nombrebuscar,$apellidobuscar,$cedulabuscar,$fichabuscar,$periodoidbuscar,0);
		
			for($j=0;$j<count($data);$j++)
			{
					$aux= $this->Funcionario->find("first",array("fields"=>"Organizacion.siglas","conditions"=>array("Funcionario.id"=>$data[$j]['Funcionario']['id'])));
					$data[$j]['Organizacion']['siglas']=$aux['Organizacion']['siglas'];
					$data[$j]['Funcionario']['cantidad']=$this->cantidad_productos($data[$j]['Pedido']['id']);
			}
			$this->set('tipo',$tipo);			
			$this->set('busq',$busq);
			$this->set('data',$data);		
			$this->render("pdf");
	}
	


}//class
?>
